#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

typedef struct contact
{
	char name[20];
	char sex;
	char tell[12];
}contact;

contact c[100]={};

//char name[100][20]={};
//char sex[100]={};
//char tell[100][12]={};

int i = 0;

// 添加联系人，要求不超过100人，超过100则显示添加失败
void insert()
{

	for(int i=0; i<100; i++)
	{
		if(0 == c[i].sex)
		{
			printf("请输入姓名，性别，电话:");
			scanf("%s %c %s",c[i].name,&c[i].sex,c[i].tell);
			printf("添加联系人成功\n");
			getch();
			return;
		}
	}
}

// 删除联系人
void delete()
{
	printf("请输入要删除的联系人姓名:");
	char str[20] = {};
	scanf("%s",str);
	for(int i=0; i<100; i++)
	{
		if(0 == strcmp(str,c[i].name))
		{
			c[i].sex = 0;
			printf("删除联系人成功\n");
			getch();
			return;
		}
		else
		{
			printf("电话簿中无记录\n");
			getch();
		}
	}
}

//修改联系人，按姓名删除（要保证不能重名）
void update()
{
	char str[20] = {};
	printf("请输入要修改的联系人姓名：");
	scanf("%s",str);
	for(int i=0; i<100; i++)
	{
		if(0 == strcmp(str,c[i].name))
		{
			printf("%s\t%c\t%s\n",c[i].name,c[i].sex,c[i].tell);
			printf("请重新输入：");
			scanf("%s %c %s",c[i].name,&c[i].sex,c[i].tell);
			getch();
			return;
		}
	}
}

//查找联系人，根据电话号码查找联系人
void find()
{
	printf("电话:");
	char str[20] = {};
	scanf("%s",str);
	getchar();
	for(int i=0; i<100; i++)
	{
		if(strstr(c[i].tell,str))
		{
			printf("%s\t%c\t%s\n",c[i].name,c[i].sex,c[i].tell);
		}
	}
	printf("请输入任意键继续...\n");
	getch(); //getchar()要按回车才会结束（输入字符会显示),getch()按任意键结束

}

// 显示所有联系人
void show()
{
	printf("姓名\t性别\t电话\n");
	for(int i=0;i<100;i++)
	{
		if(c[i].sex)
		{
			printf("%s\t%c\t%s\n",c[i].name,c[i].sex,c[i].tell);
		}
	}
	printf("请输入任意键继续...");
	getch();

}

// 菜单
char menu(void)
{
	system("clear");
	printf("***欢迎使用指针电话簿***\n");
	printf("------------------------\n");
    printf("1、 添加\n");
	printf("2、 删除\n");
	printf("3、 修改\n");
	printf("4、 查找\n");
	printf("5、 显示\n");
	printf("q、 退出\n");
    printf("------------------------\n");
	printf("请输入指令:");
	char cmd = getch();
	printf("%c\n",cmd);
	return cmd;
}

int main()
{
	while(true)
	{
		switch(menu())
		{
			case '1': printf("insert()\n"); insert(); show();break;
			case '2': printf("delete()\n"); delete(); show();break;
			case '3': printf("update()\n"); update(); show();break;
			case '4': printf("find()\n"); find(); break;
			case '5': printf("show()\n"); show(); break;
			case 'q': printf("exit()\n"); return 0;
			default : printf("cmd error!\n");
		}
	}
}





